Skip to content

Implement water_heater platform - part 2#1092

Draft
bouwew wants to merge 42 commits into
mainfrom
water_heater_2
Draft

Implement water_heater platform - part 2#1092
bouwew wants to merge 42 commits into
mainfrom
water_heater_2

Conversation

@bouwew

@bouwew bouwew commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features

    • Added separate water heater entities for independent boiler temperature and DHW temperature control, each with its own setpoint.
  • Changes

    • DHW mode selector now reflects the new available modes (defaulting to “eco”), with “off” removed from the DHW mode list.
    • Removed maximum boiler/DHW temperature number entities; remaining temperature controls now follow the new boiler/DHW setpoints.
    • Updated water heater behavior and UI translations to match the split layout.
  • Chores

    • Updated the Plugwise library dependency and refreshed tests/fixtures/snapshots.

@coderabbitai

coderabbitai Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Replaces legacy max-temperature number entities and the single water-heater entity with separate boiler_temperature and dhw_temperature variants, updates translations, fixtures, snapshots, and tests for the new schema, and switches the Plugwise dependency to the water_heater_2 git target.

Changes

Water Heater Multi-Entity Refactor

Layer / File(s) Summary
Constants and type aliases
custom_components/plugwise/const.py
Removes max boiler and DHW temperature constants from the number section, adds water-heater constants, narrows NumberType, and introduces WaterHeaterType/WaterHeaterOptionsType.
Number entity updates
custom_components/plugwise/number.py
Removes the boiler max-temperature number entity and reads number limits and step values directly from device control data.
Water heater platform
custom_components/plugwise/water_heater.py
Adds a description-driven water-heater registry, creates one entity per supported heater variant, and updates temperature and operation-mode handling to use the variant key and options key.
Translations and dependency
custom_components/plugwise/translations/en.json, custom_components/plugwise/translations/nl.json, custom_components/plugwise/manifest.json
Removes the old number keys, updates DHW mode labels, reshapes water-heater translations for boiler_temperature and dhw_temperature, and changes the Plugwise requirement to the git target.
Fixtures and snapshots
tests/components/plugwise/fixtures/*/data.json, tests/components/plugwise/snapshots/test_*.ambr
Updates heater fixture payloads to the new boiler and DHW schema, removes obsolete sensor snapshots, updates DHW select snapshots to eco, and adds split water-heater snapshots.
Test assertions
tests/components/plugwise/test_init.py, tests/components/plugwise/test_number.py, tests/components/plugwise/test_water_heater.py
Adjusts entity-count assertions, replaces the explicit max-boiler-temperature number test with snapshot validation, and retargets the water-heater service test to the DHW entity and eco mode.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

  • plugwise/plugwise-beta#844: Both PRs modify custom_components/plugwise/manifest.json to change the plugwise dependency reference.
  • plugwise/plugwise-beta#1048: Both PRs touch the Plugwise translation resources and overlap on the maximum_boiler_temperature/max_dhw_temperature area.
  • plugwise/plugwise-beta#1085: This PR refines the water-heater split introduced there, including the constants and water_heater.py entity model.

Suggested labels: require-dev-pass

Suggested reviewers: CoMPaTech

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the main change: further implementation of the water_heater platform.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch water_heater_2

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot requested a review from CoMPaTech June 23, 2026 06:04
@coderabbitai coderabbitai Bot added enhancement New feature or request needs_upstreaming Things that are here in -beta but must be upstreamed to HA-core labels Jun 23, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@custom_components/plugwise/manifest.json`:
- Line 11: The plugwise dependency URL in the manifest.json contains an extra
forward slash in the git reference syntax. In the string starting with
"plugwise@git+https://github.com/plugwise/python-plugwise.git/@water_heater_2",
remove the forward slash that appears between ".git" and "`@water_heater_2`" so
the URL follows the correct PEP 508 VCS format:
git+https://github.com/plugwise/python-plugwise.git@water_heater_2.
- Around line 10-12: The git requirement URL for the plugwise package in the
requirements array contains a malformed reference syntax with an extraneous
forward slash. In the plugwise requirement string that starts with
"plugwise@git+https://github.com/plugwise/python-plugwise.git/", remove the
forward slash immediately before the @ symbol so that it reads
"plugwise@git+https://github.com/plugwise/python-plugwise.git@water_heater_2"
instead. The @ symbol must attach directly to .git without an intervening slash
for pip to correctly resolve the git branch reference.

In `@custom_components/plugwise/number.py`:
- Around line 110-120: The issue is that self.ctrl is cached once during
initialization, causing the native_value property to return stale data after
coordinator updates. Instead of caching self.ctrl as an instance variable in the
initialization block, remove that line and modify the native_value property to
read directly from the current device state each time it is called by accessing
self.device.get(description.key, {}).get("setpoint"). Keep the initialization of
_attr_native_max_value, _attr_native_min_value, and _attr_native_step since they
define static bounds, but ensure native_value always fetches the fresh setpoint
from the device payload.

In `@custom_components/plugwise/translations/nl.json`:
- Line 307: The "off" label in the Dutch translation file (nl.json) currently
has the English value "Off" instead of the proper Dutch translation. Replace the
value "Off" with the Dutch translation "Uit" for the "off" key to maintain
consistency with other Dutch state labels in the file.

In `@custom_components/plugwise/water_heater.py`:
- Around line 109-110: The OPERATION_MODE feature is being advertised for all
water heater entities regardless of whether they actually have mode options
available. For entities like boiler_temperature where options_key is None, the
OPERATION_MODE feature should not be added to _attr_supported_features. Gate the
addition of WaterHeaterEntityFeature.OPERATION_MODE by checking if the entity
has valid mode options (i.e., options_key is not None) before setting it in the
feature flags. Apply this conditional gating consistently across all water
heater entity classes to prevent invalid mode-control paths.
- Around line 105-112: Remove the caching of `self.dhw_temp` at initialization
and instead use `description.key` dynamically to access per-entity temperature
data. Replace the line that sets `self.dhw_temp = self.device.get(DHW_TEMP, {})`
with direct references to `self.device.get(description.key, {})` when reading
UPPER_BOUND and LOWER_BOUND temperature limits. Apply this same pattern change
to the other affected areas (lines 122-123, 138-140, and 152) to ensure each
entity reads its own temperature configuration key dynamically rather than
caching stale data from initialization.

In `@tests/components/plugwise/snapshots/test_water_heater.ambr`:
- Around line 8-13: The boiler water-heater snapshots in the test file are
validating DHW-derived limits and modes instead of boiler-derived values, and
they contain an inconsistent mode contract where operation_list only contains
"on" while operation_mode or state is set to "eco". Update all affected snapshot
sections (including the ones at the specified line ranges) to use boiler-derived
temperature limits and operation modes, and ensure the operation_list values are
consistent with the actual operation_mode and state values being tested so that
the snapshots accurately validate the boiler entity behavior and catch any
mapping regressions.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 17c1491e-eff1-49b3-8758-2e4ea2f4c9c5

📥 Commits

Reviewing files that changed from the base of the PR and between cdf60ad and 7e8bbb2.

📒 Files selected for processing (23)
  • custom_components/plugwise/const.py
  • custom_components/plugwise/manifest.json
  • custom_components/plugwise/number.py
  • custom_components/plugwise/translations/en.json
  • custom_components/plugwise/translations/nl.json
  • custom_components/plugwise/water_heater.py
  • tests/components/plugwise/fixtures/adam_plus_anna_new/data.json
  • tests/components/plugwise/fixtures/anna_heatpump_heating/data.json
  • tests/components/plugwise/fixtures/anna_p1/data.json
  • tests/components/plugwise/fixtures/anna_v4/data.json
  • tests/components/plugwise/fixtures/anna_v4_dhw/data.json
  • tests/components/plugwise/fixtures/m_adam_cooling/data.json
  • tests/components/plugwise/fixtures/m_adam_heating/data.json
  • tests/components/plugwise/fixtures/m_adam_heating_off_schedule/data.json
  • tests/components/plugwise/fixtures/m_adam_jip/data.json
  • tests/components/plugwise/fixtures/m_anna_heatpump_cooling/data.json
  • tests/components/plugwise/snapshots/test_number.ambr
  • tests/components/plugwise/snapshots/test_select.ambr
  • tests/components/plugwise/snapshots/test_sensor.ambr
  • tests/components/plugwise/snapshots/test_water_heater.ambr
  • tests/components/plugwise/test_init.py
  • tests/components/plugwise/test_number.py
  • tests/components/plugwise/test_water_heater.py
💤 Files with no reviewable changes (3)
  • tests/components/plugwise/test_number.py
  • tests/components/plugwise/snapshots/test_number.ambr
  • tests/components/plugwise/snapshots/test_sensor.ambr

Comment thread custom_components/plugwise/manifest.json
Comment thread custom_components/plugwise/manifest.json Outdated
Comment thread custom_components/plugwise/number.py Outdated
Comment thread custom_components/plugwise/translations/nl.json Outdated
Comment thread custom_components/plugwise/water_heater.py Outdated
Comment thread custom_components/plugwise/water_heater.py Outdated
Comment thread tests/components/plugwise/snapshots/test_water_heater.ambr Outdated
@coderabbitai coderabbitai Bot added the require-dev-pass Require actions to pass against HA dev-branch (and silently fail on HA master-branch) label Jun 25, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
custom_components/plugwise/translations/nl.json (1)

100-106: 📐 Maintainability & Code Quality | 🔵 Trivial

Verify completeness of select_dhw_mode translations.

The translation files for select_dhw_mode currently define only comfort and eco. As the available options are populated dynamically from the device, ensure that all other potential DHW modes supported by the firmware (e.g., anti_freeze, boost, off) are included in the translation keys to prevent untranslated strings in the UI.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@custom_components/plugwise/translations/nl.json` around lines 100 - 106, The
select_dhw_mode translation is incomplete: only comfort and eco are defined in
the select state map. Update the translation entries for select_dhw_mode in the
nl.json select section to include every DHW mode the device can expose, such as
anti_freeze, boost, and off, so the UI has localized labels for all dynamically
populated options.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@custom_components/plugwise/translations/nl.json`:
- Around line 100-106: The select_dhw_mode translation is incomplete: only
comfort and eco are defined in the select state map. Update the translation
entries for select_dhw_mode in the nl.json select section to include every DHW
mode the device can expose, such as anti_freeze, boost, and off, so the UI has
localized labels for all dynamically populated options.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 34a1eae3-127e-4e4f-bbe9-c98d1edf4867

📥 Commits

Reviewing files that changed from the base of the PR and between 7e8bbb2 and 2aff0ac.

📒 Files selected for processing (5)
  • custom_components/plugwise/manifest.json
  • custom_components/plugwise/number.py
  • custom_components/plugwise/translations/en.json
  • custom_components/plugwise/translations/nl.json
  • custom_components/plugwise/water_heater.py
🚧 Files skipped from review as they are similar to previous changes (3)
  • custom_components/plugwise/number.py
  • custom_components/plugwise/manifest.json
  • custom_components/plugwise/translations/en.json

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error while testing for Development HA-core:

⚠️ Warning: Incompatible while testing against dev HA-core.
✔️ Success: No problem with testing against released HA-core.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error while testing for Development HA-core:

Error: Incompatible while testing against dev HA-core and required to pass.
✔️ Success: No problem with testing against released HA-core.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error while testing for Development HA-core:

Error: Incompatible while testing against dev HA-core and required to pass.
✔️ Success: No problem with testing against released HA-core.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error while testing for Development HA-core:

Error: Incompatible while testing against dev HA-core and required to pass.
✔️ Success: No problem with testing against released HA-core.

@bouwew bouwew force-pushed the water_heater_2 branch 3 times, most recently from 7e333a8 to cd937d8 Compare June 25, 2026 18:17

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error while testing for Development HA-core:

Error: Incompatible while testing against dev HA-core and required to pass.
✔️ Success: No problem with testing against released HA-core.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error while testing for Development HA-core:

Error: Incompatible while testing against dev HA-core and required to pass.
✔️ Success: No problem with testing against released HA-core.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error while testing for Development HA-core:

Error: Incompatible while testing against dev HA-core and required to pass.
✔️ Success: No problem with testing against released HA-core.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Warning while testing for RELEASED HA-core:

✔️ Success: No problem with testing against dev HA-core.
✔️ Success: No problem with testing against released HA-core.

@bouwew bouwew force-pushed the water_heater_2 branch 2 times, most recently from e52e3b0 to 370d28b Compare June 30, 2026 16:01

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error while testing for Development HA-core:

Error: Incompatible while testing against dev HA-core and required to pass.
✔️ Success: No problem with testing against released HA-core.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Warning while testing for RELEASED HA-core:

✔️ Success: No problem with testing against dev HA-core.
✔️ Success: No problem with testing against released HA-core.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
custom_components/plugwise/water_heater.py (2)

45-59: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove leftover dev-note comment before merge.

Line 45 reads: # Upstream + is there a reason we didn't rename this one prefixed? — this is an open question left in code, not a real code comment. Resolve the naming question or drop the comment before merging.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@custom_components/plugwise/water_heater.py` around lines 45 - 59, Remove the
leftover developer note from the WATERHEATER_TYPES definition in Plugwise
water_heater.py; the inline “Upstream + is there a reason we didn't rename this
one prefixed?” text is an unresolved review question, so either rename the
related BOILER_TEMP/DHW_TEMP identifiers consistently if that was the intended
change or delete the comment entirely and keep only the entity description
declarations.

116-118: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Simplify redundant on/off state staging.

Tracing all branches of async_set_operation_mode: whether it goes through async_turn_off, async_turn_on, or the direct else, it always ends up calling set_dhw_mode(DHW_MODE, self._dev_id, list_type, self._operation_mode) with the same final value. The self._mode_off cache (set once at init from a snapshot of DHW_MODE, later mutated only inside these two methods) doesn't change the actual command sent to the device — it only adds branching and shared mutable instance state (_mode_off, _operation_mode, _list_type) that can drift from live coordinator data between calls. This is dead complexity rather than a functional bug today, but it's a maintenance/readability trap for future changes.

♻️ Proposed simplification
         self._attr_temperature_unit = UnitOfTemperature.CELSIUS
         self._attr_unique_id = f"{device_id}-{description.key}"
-        self._list_type = 0
-        self._mode_off = self.device.get(DHW_MODE) == STATE_OFF
-        self._operation_mode: str = STATE_OFF
     async def async_set_operation_mode(self, operation_mode: str) -> None:
         """Set the operation mode."""
         if self.operation_list is None:
             return  # pragma: no cover

-        self._list_type = len(self.operation_list)
-        self._operation_mode = operation_mode
-        if self._operation_mode == STATE_OFF and not self._mode_off:
-            await self.async_turn_off()
-            return
-
-        if self._mode_off and self._operation_mode != STATE_OFF:
-            await self.async_turn_on()
-            return
-
-        await self.coordinator.api.set_dhw_mode(DHW_MODE, self._dev_id, self._list_type, self._operation_mode)
+        list_type = len(self.operation_list)
+        await self.coordinator.api.set_dhw_mode(
+            DHW_MODE, self._dev_id, list_type, operation_mode
+        )

If async_turn_on/async_turn_off are kept for a future ON_OFF feature, they can remain as thin wrappers without the _mode_off bookkeeping.

Also applies to: 149-195

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@custom_components/plugwise/water_heater.py` around lines 116 - 118, Simplify
the redundant operation-mode staging in WaterHeaterEntity by removing the shared
mutable cache used for on/off branching. In async_set_operation_mode,
async_turn_on, and async_turn_off, stop relying on _mode_off, _operation_mode,
and _list_type to decide the final command, and instead derive the DHW mode
directly from the requested operation mode before calling set_dhw_mode. Keep
async_turn_on and async_turn_off only as thin wrappers if needed, but eliminate
the extra state bookkeeping so the behavior is driven by the current request
rather than stale instance fields.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@custom_components/plugwise/water_heater.py`:
- Around line 45-59: Remove the leftover developer note from the
WATERHEATER_TYPES definition in Plugwise water_heater.py; the inline “Upstream +
is there a reason we didn't rename this one prefixed?” text is an unresolved
review question, so either rename the related BOILER_TEMP/DHW_TEMP identifiers
consistently if that was the intended change or delete the comment entirely and
keep only the entity description declarations.
- Around line 116-118: Simplify the redundant operation-mode staging in
WaterHeaterEntity by removing the shared mutable cache used for on/off
branching. In async_set_operation_mode, async_turn_on, and async_turn_off, stop
relying on _mode_off, _operation_mode, and _list_type to decide the final
command, and instead derive the DHW mode directly from the requested operation
mode before calling set_dhw_mode. Keep async_turn_on and async_turn_off only as
thin wrappers if needed, but eliminate the extra state bookkeeping so the
behavior is driven by the current request rather than stale instance fields.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 889d7da9-2972-42d3-99a2-f63ba6637a1b

📥 Commits

Reviewing files that changed from the base of the PR and between 7ea3bd9 and 186cf27.

📒 Files selected for processing (24)
  • custom_components/plugwise/const.py
  • custom_components/plugwise/manifest.json
  • custom_components/plugwise/number.py
  • custom_components/plugwise/translations/en.json
  • custom_components/plugwise/translations/nl.json
  • custom_components/plugwise/water_heater.py
  • tests/components/plugwise/fixtures/adam_plus_anna_new/data.json
  • tests/components/plugwise/fixtures/anna_heatpump_heating/data.json
  • tests/components/plugwise/fixtures/anna_loria_cooling_active/data.json
  • tests/components/plugwise/fixtures/anna_p1/data.json
  • tests/components/plugwise/fixtures/anna_v4/data.json
  • tests/components/plugwise/fixtures/anna_v4_dhw/data.json
  • tests/components/plugwise/fixtures/m_adam_cooling/data.json
  • tests/components/plugwise/fixtures/m_adam_heating/data.json
  • tests/components/plugwise/fixtures/m_adam_heating_off_schedule/data.json
  • tests/components/plugwise/fixtures/m_adam_jip/data.json
  • tests/components/plugwise/fixtures/m_anna_heatpump_cooling/data.json
  • tests/components/plugwise/snapshots/test_number.ambr
  • tests/components/plugwise/snapshots/test_select.ambr
  • tests/components/plugwise/snapshots/test_sensor.ambr
  • tests/components/plugwise/snapshots/test_water_heater.ambr
  • tests/components/plugwise/test_init.py
  • tests/components/plugwise/test_number.py
  • tests/components/plugwise/test_water_heater.py
💤 Files with no reviewable changes (4)
  • tests/components/plugwise/snapshots/test_number.ambr
  • custom_components/plugwise/number.py
  • tests/components/plugwise/test_number.py
  • tests/components/plugwise/snapshots/test_sensor.ambr
✅ Files skipped from review due to trivial changes (5)
  • tests/components/plugwise/fixtures/anna_p1/data.json
  • tests/components/plugwise/fixtures/m_adam_heating_off_schedule/data.json
  • tests/components/plugwise/snapshots/test_select.ambr
  • tests/components/plugwise/fixtures/anna_v4_dhw/data.json
  • tests/components/plugwise/fixtures/m_adam_cooling/data.json
🚧 Files skipped from review as they are similar to previous changes (11)
  • custom_components/plugwise/manifest.json
  • tests/components/plugwise/fixtures/adam_plus_anna_new/data.json
  • tests/components/plugwise/test_init.py
  • tests/components/plugwise/fixtures/anna_heatpump_heating/data.json
  • custom_components/plugwise/translations/nl.json
  • tests/components/plugwise/fixtures/m_adam_jip/data.json
  • tests/components/plugwise/fixtures/m_adam_heating/data.json
  • custom_components/plugwise/translations/en.json
  • tests/components/plugwise/fixtures/m_anna_heatpump_cooling/data.json
  • tests/components/plugwise/fixtures/anna_v4/data.json
  • custom_components/plugwise/const.py

@sonarqubecloud

sonarqubecloud Bot commented Jul 4, 2026

Copy link
Copy Markdown

Comment on lines +109 to +110
self._attr_max_temp = temp_data.get(UPPER_BOUND, 75.0)
self._attr_min_temp = temp_data.get(LOWER_BOUND, 40.0)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While we are at it, lets set these in const as well?

@CoMPaTech

Copy link
Copy Markdown
Member

Just marking approved for not reading through all the jsons again :) Nothing problematic though aside from a single nitpick

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request needs_upstreaming Things that are here in -beta but must be upstreamed to HA-core require-dev-pass Require actions to pass against HA dev-branch (and silently fail on HA master-branch)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants